<template>
  <div id="app">
    <h1>{{title}}--- {{ count }}</h1>
    <!-- vuex的state是单向数据流，不能写v-model，需要拆开了写 -->
    <!-- <input type="text" v-model="$store.state.count"> -->
    <input type="text" :value="$store.state.count" @input="fn">
    <Son1></Son1>
    <hr>
    <Son2></Son2>
  </div>
</template>

<script>
// 安装vuex命令---  npm i vuex@3 或者 yarn add vuex@3
import Son1 from './components/Son1.vue'
import Son2 from './components/Son2.vue'
// mapState是vuex的一个辅助函数，帮我们更方便的获取vuex的值，底层就是类似计算属性
import { mapState } from 'vuex'

export default {
  name: 'app',
  data: function () {
    return {

    }
  },
  components: {
    Son1,
    Son2
  },
  computed:{
    // count() {
    //   return this.$store.state.count
    // }
    // 下面这样的代码就相当于写了两个计算属性
    ...mapState(['count', 'msg', 'title'])
  },
  created(){
   console.log('我是全局仓库的值：',this.$store.state.count);
    console.log(this.count, this.msg);
  },
  methods: {
    fn(e) {
      console.log(e.target.value);
      // 因为count数据是数字，我们的e.target.value是字符串，需要先转换以下
      const num = +e.target.value
      this.$store.commit('addCountMutations', num)
    }
  }
}
</script>

<style>
#app {
  width: 600px;
  margin: 20px auto;
  border: 3px solid #ccc;
  border-radius: 3px;
  padding: 10px;
}
</style>